A computer network is a system designed to link together computers, servers, peripherals, storage devices, and communication devices for communications. Examples of such a computer network include a local area network (LAN), a wide are network (WAN), a campus area network (CAN), a metropolitan area network (MAN), and global area network (GAN). The central characteristics of a computer network is sharing, whether that be sharing of cost, resources, or data bases, while at the same time insuring a high degree of data privacy.
As high-speed and high-performance communications become necessary for many applications such as data warehousing, decision support, and transaction processing, many companies have adopted clustering technology for ability to provide availability and scalability for these applications. A cluster is a group of servers, workstations, and/or storage devices that are linked together to operate as a single system to deliver high performance, low latency, and extreme reliability. Clustering offers three primary benefits: scalability, availability, and manageability. Scalability is obtained by allowing servers to work together and to allow additional services to be added for increased processing as needed. The cluster combines the processing power of all servers within the cluster to run a single logical application (such as a database server). Availability is obtained by allowing servers to “back each other up” in the case of failure. Likewise, manageability is obtained by allowing the cluster to be utilized as a single, unified computer resource, that is, the user sees the entire cluster (rather than any individual server) as the provider of services and applications.
High-performance network technologies known as system area networks (SANs) have recently been developed for linking servers and network-connected storage devices within a cluster. Virtual Interface (VI) Architecture is designed to enable applications to communicate over a system area network (SAN). Basically, the VI Architecture provides a transport service which allows a collection of independent standards-based servers to be utilized as a highly scalable cluster to meet the performance and capacity requirements of the largest and most demanding enterprise applications. Its fast server-to-server communications can enhance an application's scalability and performance in a variety of ways—from allowing a single application to run efficiently across dozens of clustered nodes, to speeding up the exchange of data between distributed application modules running on different application servers.
One of the inherent challenges of the system area network (SAN) is to design a data transport mechanism that can deliver a large amount of data between nodes in the cluster (“high bandwidth”), and that can exchange messages quickly between nodes in the cluster (“low latency”). Traditional data transports between nodes in a cluster are done through the network infrastructure provided by a host operating system (OS). The operating system (OS) structure requires large amount of system processing overhead and extended processing time with respect to each message.
In particular, for a specific application such as access of a storage device of a remote server in a cluster, standard interfaces provided by the host operating system (OS) such as file system application program interfaces (API) are used to access a network file system (NFS). However, direct access to storage devices of remote servers within a cluster through input/output (I/O) subsystems was not performed transparently. Each request for a data transfer in the traditional data transports incurred a large amount of processing overhead of operating system (OS) stacks on both the local and remote servers of the cluster. This overhead limits input/output (I/O) bandwidth, increases input/output (I/O) latency, and increases the response time to the application.
Current alternative to high network overhead is for another application to generate special application-to-application messages to the remote node in order to access a remote server in a cluster. A remote application running on the remote node must issue an input/output (I/O) request to the remote operating system (OS) on behalf of the local application. This way the operating system (OS) overhead on the local server is avoided, but there are still a great deal of coordination between cooperating applications of the local server and the remote server.
Therefore, there is an urgent need for providing a direct, transparent access to storage devices connected to a host server within a network for efficient sharing of resources and databases among all network members.